﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IDAL;
using Model;

namespace DAL
{

    public class D_TemplateClassify : ITemplateClassify
    {
        WishDayEntities _e;
        public D_TemplateClassify()
        {
            _e = new WishDayEntities();
        }
        public void Add(Model.TemplateClassify obj)
        {
            _e.TemplateClassify.Add(obj);
            _e.SaveChanges();
        }

        public void Delete(int id)
        {
            var data = _e.TemplateClassify.Find(id);
            _e.TemplateClassify.Remove(data);
            _e.SaveChanges();
        }

        public Model.TemplateClassify FindById(int id)
        {
            var data = _e.TemplateClassify.Find(id);
            return data;
        }

        public List<TemplateClassify> GetAll()
        {
            return _e.TemplateClassify.ToList();
        }

        public List<LevelClass> LevelClass()
        {
            List<LevelClass> pairs = new List<LevelClass>();
            List<TemplateClassify> data = new List<TemplateClassify>();
            data = _e.TemplateClassify.Where(x => x.ParentID == 0).ToList();

            List<TemplateClassify> odata = new List<TemplateClassify>();
            foreach (var item in data)
            {
                var a = _e.TemplateClassify.Where(x => x.ParentID == item.ClassifyID).ToList();
                if (a.Count() > 0)
                {
                    pairs.Add(new LevelClass
                    {
                        LevelName = item.Cname,
                        ListTemplateClassify = a
                    });
                }
            }
            return pairs;
        }
        public List<TemplateClassify> ParentClass(int id)
        {
            //获取当前分类
            var thisdata = _e.TemplateClassify.Find(id);
            //获取当前分类的父级ID
            var thisParentID = thisdata.ParentID;
            if (thisParentID==0)
            {
                return new List<TemplateClassify> { new TemplateClassify { ClassifyID = 0, Cname = "将该类设为根分类" } };
            }
            //根据当前分类的父级ID获取父级分类的父级ID
            var ID = _e.TemplateClassify.Find(thisParentID.Value).ParentID;
            //根据当前分类祖父级ID查询所有父级
            var data = _e.TemplateClassify.Where(x => x.ParentID == ID);
            return data.ToList();
        }

        public List<TemplateClassify> RootClass()
        {
            return _e.TemplateClassify.Where(x => x.ParentID == 0).ToList();
        }

        public void Update(int id, Model.TemplateClassify obj)
        {
            var data = _e.TemplateClassify.Find(id);
            data.Cname = obj.Cname;
            data.Show = obj.Show;
            data.Sort = obj.Sort;
            data.ParentID = obj.ParentID;
            _e.SaveChanges();
        }
    }
}
